function(glCreateSampleGTC NAME)
	set(SAMPLE_NAME ${GL_PROFILE_GTC}-${GL_VERSION_GTC}-${NAME})
	set(SHADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../data/${GL_PROFILE_GTC}-${GL_VERSION_GTC})

	foreach(FILE ${GL_SHADER_GTC})
		set(SHADER_PATH ${SHADER_PATH} ${SHADER_DIR}/${FILE})
	endforeach(FILE)

	source_group("Shader Files" FILES ${SHADER_PATH})
	
	add_executable(${SAMPLE_NAME} ${GL_PROFILE_GTC}-${GL_VERSION_GTC}-${NAME}.cpp ${SHADER_PATH})
	add_test(NAME ${SAMPLE_NAME} COMMAND $<TARGET_FILE:${SAMPLE_NAME}>)

	target_link_libraries(${SAMPLE_NAME} ${FRAMEWORK_NAME} ${BINARY_FILES})
	add_dependencies(${SAMPLE_NAME} glfw ${FRAMEWORK_NAME} ${COPY_BINARY})

	install(TARGETS ${SAMPLE_NAME} DESTINATION .)
endfunction(glCreateSampleGTC)

if(NOT APPLE)

# OpenGL ES 2.0 samples
set(GL_PROFILE_GTC es)
set(GL_VERSION_GTC 200)
set(GL_SHADER_GTC flat-color.vert flat-color.frag)
glCreateSampleGTC(draw-elements)
set(GL_SHADER_GTC fbo-shadow-depth.vert fbo-shadow-depth.frag fbo-shadow-render.vert fbo-shadow-render.frag)
glCreateSampleGTC(fbo-shadow)

# OpenGL ES 3.0 samples
set(GL_VERSION_GTC 300)
set(GL_SHADER_GTC flat-color.vert flat-color.frag)
glCreateSampleGTC(draw-elements)
set(GL_SHADER_GTC fbo-srgb.vert fbo-srgb.frag fbo-srgb-blit.vert fbo-srgb-blit.frag)
glCreateSampleGTC(fbo-srgb)
set(GL_SHADER_GTC fbo-shadow-depth.vert fbo-shadow-depth.frag fbo-shadow-render.vert fbo-shadow-render.frag)
glCreateSampleGTC(fbo-shadow)
set(GL_SHADER_GTC texture-format-packed.vert texture-format-packed.frag)
glCreateSampleGTC(texture-format-packed)

# OpenGL 3.0 samples
set(GL_PROFILE_GTC gl)
set(GL_VERSION_GTC 300)

set(GL_SHADER_GTC image-2d.vert image-2d.frag)
glCreateSampleGTC(fbo-multisample)
glCreateSampleGTC(test-alpha)

endif(NOT APPLE)

# OpenGL 3.2 samples
set(GL_PROFILE_GTC gl)
set(GL_VERSION_GTC 320)

set(GL_SHADER_GTC buffer-uniform.vert buffer-uniform.frag)
glCreateSampleGTC(buffer-uniform)
set(GL_SHADER_GTC buffer-uniform-shared.vert buffer-uniform-shared.frag)
glCreateSampleGTC(buffer-uniform-shared)
set(GL_SHADER_GTC buffer-update.vert buffer-update.frag)
glCreateSampleGTC(buffer-update)
set(GL_SHADER_GTC )
glCreateSampleGTC(caps)
set(GL_SHADER_GTC draw-base-vertex.vert draw-base-vertex.frag)
glCreateSampleGTC(draw-base-vertex)
set(GL_SHADER_GTC draw-image-space.vert draw-image-space.frag)
glCreateSampleGTC(draw-image-space)
set(GL_SHADER_GTC draw-instanced.vert draw-instanced.frag)
glCreateSampleGTC(draw-instanced)
set(GL_SHADER_GTC draw-multiple.vert draw-multiple.frag)
glCreateSampleGTC(draw-multiple)
set(GL_SHADER_GTC draw-range-arrays.vert draw-range-arrays.frag)
glCreateSampleGTC(draw-range-arrays)
set(GL_SHADER_GTC draw-range-elements.vert draw-range-elements.frag)
glCreateSampleGTC(draw-range-elements)
set(GL_SHADER_GTC draw-without-vertex-attrib.vert draw-without-vertex-attrib.frag)
glCreateSampleGTC(draw-without-vertex-attrib)
set(GL_SHADER_GTC fbo.vert fbo.frag texture-2d.vert texture-2d.frag)
glCreateSampleGTC(fbo)
set(GL_SHADER_GTC fbo.vert fbo.frag texture-2d.vert texture-2d.frag)
glCreateSampleGTC(fbo-depth-stencil)
set(GL_SHADER_GTC fbo-blend.vert fbo-blend.frag fbo-blend-blit.vert fbo-blend-blit.frag)
glCreateSampleGTC(fbo-blend)
set(GL_SHADER_GTC fbo-blend-points.vert fbo-blend-points.frag fbo-blend-points-blit.vert fbo-blend-points-blit.frag)
glCreateSampleGTC(fbo-blend-points)
set(GL_SHADER_GTC fbo-blit.vert fbo-blit.frag)
glCreateSampleGTC(fbo-blit)
set(GL_SHADER_GTC fbo-depth.vert fbo-depth.frag texture-2d.vert texture-2d.frag)
glCreateSampleGTC(fbo-depth)
set(GL_SHADER_GTC fbo-depth-multisample.vert fbo-depth-multisample.frag texture-2d.vert texture-2d.frag)
glCreateSampleGTC(fbo-depth-multisample)
set(GL_SHADER_GTC fbo-integer-render.vert fbo-integer-render.frag fbo-integer-splash.vert fbo-integer-splash.frag)
glCreateSampleGTC(fbo-integer)
set(GL_SHADER_GTC fbo-integer-render.vert fbo-integer-render.frag fbo-integer-splash.vert fbo-integer-splash.frag)
glCreateSampleGTC(fbo-integer-blit)
set(GL_SHADER_GTC fbo-layered-rtt-array.vert fbo-layered-rtt-array.frag fbo-layered.vert fbo-layered.geom fbo-layered.frag)
glCreateSampleGTC(fbo-layered)
set(GL_SHADER_GTC fbo-multisample.vert fbo-multisample.frag)
glCreateSampleGTC(fbo-multisample)
set(GL_SHADER_GTC fbo-multisample-explicit.vert fbo-multisample-explicit-texture.frag fbo-multisample-explicit-near.frag fbo-multisample-explicit-box.frag)
glCreateSampleGTC(fbo-multisample-explicit)
set(GL_SHADER_GTC fbo-multisample-explicit.vert fbo-multisample-explicit-texture.frag fbo-multisample-explicit-near.frag fbo-multisample-explicit-box.frag)
glCreateSampleGTC(fbo-multisample-mask)
set(GL_SHADER_GTC fbo-multisample-integer.vert fbo-multisample-integer.frag texture-integer.vert texture-integer.frag)
glCreateSampleGTC(fbo-multisample-integer)
set(GL_SHADER_GTC fbo-shadow-depth.vert fbo-shadow-render.vert fbo-shadow-render.frag)
glCreateSampleGTC(fbo-shadow)
set(GL_SHADER_GTC fbo-srgb.vert fbo-srgb.frag fbo-srgb-blit.vert fbo-srgb-blit.frag)
glCreateSampleGTC(fbo-srgb)
set(GL_SHADER_GTC fbo-srgb-blend.vert fbo-srgb-blend.frag fbo-srgb-blit-blend.vert fbo-srgb-blit-blend.frag)
glCreateSampleGTC(fbo-srgb-blend)
set(GL_SHADER_GTC fbo-srgb-decode.vert fbo-srgb-decode.frag fbo-srgb-decode-blit.vert fbo-srgb-decode-blit.frag)
glCreateSampleGTC(fbo-srgb-decode-ext)
set(GL_SHADER_GTC fbo-rtt-multiple-output.vert fbo-rtt-multiple-output.frag fbo-rtt-single-output.vert fbo-rtt-single-output.frag)
glCreateSampleGTC(fbo-rtt)
set(GL_SHADER_GTC fbo-rtt-multiple-output.vert fbo-rtt-multiple-output.frag fbo-rtt-layer.vert fbo-rtt-layer.frag)
glCreateSampleGTC(fbo-rtt-texture-array)
set(GL_SHADER_GTC fbo-readpixels-blit.vert fbo-readpixels-blit.frag fbo-readpixels-sample.vert fbo-readpixels-sample.frag)
glCreateSampleGTC(fbo-readpixels)
set(GL_SHADER_GTC fbo-readpixels-blit.vert fbo-readpixels-blit.frag fbo-readpixels-sample.vert fbo-readpixels-sample.frag)
glCreateSampleGTC(fbo-readpixels-async)
set(GL_SHADER_GTC fbo-readpixels-blit.vert fbo-readpixels-blit.frag fbo-readpixels-sample.vert fbo-readpixels-sample.frag)
glCreateSampleGTC(fbo-readpixels-staging)
set(GL_SHADER_GTC glsl-builtin-blocks.vert glsl-builtin-blocks.frag)
glCreateSampleGTC(glsl-builtin-blocks)
set(GL_SHADER_GTC glsl-cast-fail.vert glsl-cast-fail.frag)
glCreateSampleGTC(glsl-cast-fail)
set(GL_SHADER_GTC glsl-discard.vert glsl-discard.frag)
glCreateSampleGTC(glsl-discard)
set(GL_SHADER_GTC glsl-input-struct.vert glsl-input-struct.frag)
glCreateSampleGTC(glsl-input-struct)
set(GL_SHADER_GTC glsl-precision.vert glsl-precision.frag)
glCreateSampleGTC(glsl-precision)
set(GL_SHADER_GTC glsl-uniform-align.vert glsl-uniform-align.frag)
glCreateSampleGTC(glsl-uniform-align)
set(GL_SHADER_GTC primitive-front-face.vert primitive-front-face.frag)
glCreateSampleGTC(primitive-front-face)
set(GL_SHADER_GTC primitive-line-msaa-splash.vert primitive-line-msaa-splash.frag primitive-line-msaa-render.vert primitive-line-msaa-render.frag)
glCreateSampleGTC(primitive-line-msaa)
set(GL_SHADER_GTC primitive-point.vert primitive-point.frag)
glCreateSampleGTC(primitive-point)
set(GL_SHADER_GTC primitive-point-clip.vert primitive-point-clip.frag)
glCreateSampleGTC(primitive-point-clip)
set(GL_SHADER_GTC primitive-point-quad.vert primitive-point-quad.geom primitive-point-quad.frag)
glCreateSampleGTC(primitive-point-quad)
set(GL_SHADER_GTC primitive-shading.vert primitive-shading.geom primitive-shading.frag)
glCreateSampleGTC(primitive-shading)
set(GL_SHADER_GTC primitive-sprite.vert primitive-sprite.frag)
glCreateSampleGTC(primitive-sprite)
set(GL_SHADER_GTC program.vert program.frag)
glCreateSampleGTC(program)
set(GL_SHADER_GTC program-uniform.vert program-uniform.frag)
glCreateSampleGTC(program-uniform)
set(GL_SHADER_GTC query-conditional.vert query-conditional.frag)
glCreateSampleGTC(query-conditional)
set(GL_SHADER_GTC query-occlusion.vert query-occlusion.frag)
glCreateSampleGTC(query-occlusion)
set(GL_SHADER_GTC sync.vert sync.frag)
glCreateSampleGTC(sync)
set(GL_SHADER_GTC test-scissor.vert test-scissor.frag)
glCreateSampleGTC(test-scissor)
set(GL_SHADER_GTC texture-2d.vert texture-2d.frag)
glCreateSampleGTC(texture-2d)
glCreateSampleGTC(texture-streaming)
set(GL_SHADER_GTC texture-3d.vert texture-3d.frag)
glCreateSampleGTC(texture-3d)
set(GL_SHADER_GTC texture-buffer.vert texture-buffer.frag)
glCreateSampleGTC(texture-buffer)
set(GL_SHADER_GTC texture-compressed.vert texture-compressed.frag)
glCreateSampleGTC(texture-compressed-ext)
set(GL_SHADER_GTC texture-cube.vert texture-cube.frag)
glCreateSampleGTC(texture-cube)
set(GL_SHADER_GTC texture-derivative-x.vert texture-derivative-x.frag texture-derivative-y.vert texture-derivative-y.frag)
glCreateSampleGTC(texture-derivative)
set(GL_SHADER_GTC texture-integer.vert texture-integer.frag)
glCreateSampleGTC(texture-integer)
set(GL_SHADER_GTC texture-float.vert texture-float.frag)
glCreateSampleGTC(texture-float)
set(GL_SHADER_GTC texture-fetch.vert texture-fetch.frag)
glCreateSampleGTC(texture-fetch)
set(GL_SHADER_GTC texture-format.vert texture-format-normalized.frag texture-format-uint.frag)
glCreateSampleGTC(texture-format)
set(GL_SHADER_GTC texture-lod.vert texture-lod.frag)
glCreateSampleGTC(texture-lod)
set(GL_SHADER_GTC texture-offset.vert texture-offset.frag texture-offset-bicubic.frag)
glCreateSampleGTC(texture-offset)
set(GL_SHADER_GTC texture-2d.vert texture-2d.frag)
glCreateSampleGTC(texture-pixel-store)
set(GL_SHADER_GTC texture-type.vert texture-type.frag)
glCreateSampleGTC(texture-type)
set(GL_SHADER_GTC transform-feedback-transform.vert transform-feedback-feedback.vert transform-feedback-feedback.frag)
glCreateSampleGTC(transform-feedback-interleaved)
glCreateSampleGTC(transform-feedback-separated)

# OpenGL 3.3 samples
set(GL_VERSION_GTC 330)

set(GL_SHADER_GTC blend-index.vert blend-index.frag)
glCreateSampleGTC(blend-index)
set(GL_SHADER_GTC )
glCreateSampleGTC(caps)
set(GL_SHADER_GTC mrt.vert mrt.frag image-2d.vert image-2d.frag)
glCreateSampleGTC(blend-rtt)
set(GL_SHADER_GTC flat-color.vert flat-color.frag)
glCreateSampleGTC(buffer-type)
set(GL_SHADER_GTC instanced-array.vert instanced-array.frag)
glCreateSampleGTC(draw-instanced-array)
set(GL_SHADER_GTC query-conditional.vert query-conditional.frag)
glCreateSampleGTC(query-conditional)
set(GL_SHADER_GTC query-occlusion.vert query-occlusion.frag)
glCreateSampleGTC(query-occlusion)
set(GL_SHADER_GTC query-counter.vert query-counter.frag)
glCreateSampleGTC(query-counter)
set(GL_SHADER_GTC flat-color.vert flat-color.frag)
glCreateSampleGTC(query-timer)
set(GL_SHADER_GTC r2vb1.vert r2vb1.frag r2vb2.vert r2vb2.frag)
#glCreateSampleGTC(render2vertexbuffer)
set(GL_SHADER_GTC texture-2d.vert texture-2d.frag)
glCreateSampleGTC(sampler-anisotropy-ext)
set(GL_SHADER_GTC texture-2d.vert texture-2d.frag)
glCreateSampleGTC(sampler-filter)
set(GL_SHADER_GTC sampler-object.vert sampler-object.frag)
glCreateSampleGTC(sampler-object)
set(GL_SHADER_GTC texture-2d.vert texture-2d.frag)
glCreateSampleGTC(sampler-wrap)
set(GL_SHADER_GTC texture-integer.vert texture-integer-10bit.frag)
glCreateSampleGTC(texture-integer-rgb10a2ui)
set(GL_SHADER_GTC texture-format-packed.vert texture-format-packed.frag)
glCreateSampleGTC(texture-format-packed)
set(GL_SHADER_GTC texture-2d.vert texture-2d.frag)
glCreateSampleGTC(texture-swizzle)
set(GL_SHADER_GTC texture-rect.vert texture-rect.frag)
glCreateSampleGTC(texture-rect)

# OpenGL 4.0 samples
set(GL_VERSION_GTC 400)

set(GL_SHADER_GTC blend-rtt.vert blend-rtt.frag blend-rtt-blit.vert blend-rtt-blit.frag)
glCreateSampleGTC(blend-rtt)
set(GL_SHADER_GTC buffer-uniform-array.vert buffer-uniform-array.frag)
glCreateSampleGTC(buffer-uniform-array)
set(GL_SHADER_GTC )
glCreateSampleGTC(caps)
set(GL_SHADER_GTC flat-color.vert flat-color.frag)
glCreateSampleGTC(draw-indirect)
set(GL_SHADER_GTC rtt-array.vert rtt-array.frag layer.vert layer.geom layer.frag)
glCreateSampleGTC(fbo-layered)
set(GL_SHADER_GTC fbo-multisample-mask.vert fbo-multisample-mask.frag)
glCreateSampleGTC(fbo-multisample-mask)
set(GL_SHADER_GTC fbo-multisample-interpolate.vert fbo-multisample-interpolate.frag)
glCreateSampleGTC(fbo-multisample-interpolate)
set(GL_SHADER_GTC fbo-multisample-render.vert fbo-multisample-render.frag fbo-multisample-blit.vert fbo-multisample-blit.frag)
glCreateSampleGTC(fbo-multisample-sample-id)
set(GL_SHADER_GTC fbo-rtt.vert fbo-rtt.frag)
glCreateSampleGTC(fbo-rtt)
set(GL_SHADER_GTC rtt-array.vert rtt-array.frag)
glCreateSampleGTC(fbo-rtt-texture-array)
set(GL_SHADER_GTC fbo-shadow-depth.vert fbo-shadow-render.vert fbo-shadow-render.frag)
glCreateSampleGTC(fbo-shadow)
set(GL_SHADER_GTC multi-draw-indirect.vert multi-draw-indirect.frag)
glCreateSampleGTC(multi-draw-indirect)
set(GL_SHADER_GTC double.vert double.frag)
glCreateSampleGTC(program-64)
set(GL_SHADER_GTC subroutine.vert subroutine.frag)
glCreateSampleGTC(program-subroutine)
set(GL_SHADER_GTC tess-block.vert tess-block.cont tess-block.eval tess-block.geom tess-block.frag)
glCreateSampleGTC(program-varying-blocks)
set(GL_SHADER_GTC tess-struct.vert tess-struct.cont tess-struct.eval tess-struct.geom tess-struct.frag)
glCreateSampleGTC(program-varying-structs)
set(GL_SHADER_GTC primitive-instancing.vert primitive-instancing.geom primitive-instancing.frag)
glCreateSampleGTC(primitive-instanced)
set(GL_SHADER_GTC tess.vert tess.cont tess.eval tess.geom tess.frag)
glCreateSampleGTC(primitive-tessellation)
set(GL_SHADER_GTC tess.vert tess.cont tess.eval tess.geom tess.frag smooth-shading-geom.vert smooth-shading-geom.geom smooth-shading-geom.frag)
glCreateSampleGTC(primitive-smooth-shading)
set(GL_SHADER_GTC fetch.vert fetch.frag)
glCreateSampleGTC(sampler-fetch)
set(GL_SHADER_GTC sampler-array.vert sampler-array.frag)
glCreateSampleGTC(sampler-array)
set(GL_SHADER_GTC sampler-array-nv.vert sampler-array-nv.frag)
glCreateSampleGTC(sampler-array-nv)
set(GL_SHADER_GTC texture-buffer.vert texture-buffer.frag)
glCreateSampleGTC(texture-buffer-rgb)
set(GL_SHADER_GTC texture-cube.vert texture-cube.frag)
glCreateSampleGTC(texture-cube)
set(GL_SHADER_GTC texture-derivative1.vert texture-derivative1.frag texture-derivative2.vert texture-derivative2.frag)
glCreateSampleGTC(texture-derivative)
set(GL_SHADER_GTC feedback.vert feedback.frag transform.vert)
glCreateSampleGTC(transform-feedback-object)
set(GL_SHADER_GTC feedback-stream-point.vert feedback-stream-point.frag feedback-stream-strip.vert feedback-stream-strip.frag transform-stream.vert transform-stream.geom)
glCreateSampleGTC(transform-feedback-stream)

# OpenGL 4.1 samples
set(GL_VERSION_GTC 410)

set(GL_SHADER_GTC buffer-uniform-array.vert buffer-uniform-array.frag)
glCreateSampleGTC(buffer-uniform-array)
set(GL_SHADER_GTC )
glCreateSampleGTC(caps)
set(GL_SHADER_GTC viewport.vert viewport.geom viewport.frag layer.vert layer.geom layer.frag)
glCreateSampleGTC(fbo-layered)
set(GL_SHADER_GTC primitive-instancing.vert primitive-instancing.geom primitive-instancing.frag)
glCreateSampleGTC(primitive-instanced)
set(GL_SHADER_GTC glsl-block.vert glsl-block1.frag glsl-block2.frag)
glCreateSampleGTC(glsl-block)
set(GL_SHADER_GTC tess.vert tess.cont tess.eval tess.geom tess.frag)
glCreateSampleGTC(primitive-tessellation-2)
glCreateSampleGTC(primitive-tessellation-5)
set(GL_SHADER_GTC double.vert double.frag)
glCreateSampleGTC(program-64)
set(GL_SHADER_GTC binary.vert binary.geom binary.frag)
glCreateSampleGTC(program-binary)
set(GL_SHADER_GTC separate.vert separate.frag)
glCreateSampleGTC(program-separate)

# OpenGL 4.2 samples
set(GL_VERSION_GTC 420)

set(GL_SHADER_GTC atomic-counter.vert atomic-counter.frag)
glCreateSampleGTC(atomic-counter)
set(GL_SHADER_GTC buffer-uniform.vert buffer-uniform.frag)
glCreateSampleGTC(buffer-uniform)
set(GL_SHADER_GTC )
glCreateSampleGTC(caps)
set(GL_SHADER_GTC clipping.vert clipping.frag)
glCreateSampleGTC(clipping)
set(GL_SHADER_GTC debug-output.vert debug-output.frag)
glCreateSampleGTC(debug-output)
set(GL_SHADER_GTC draw-base-instance.vert draw-base-instance.frag)
glCreateSampleGTC(draw-base-instance)
set(GL_SHADER_GTC fbo-texture-2d.vert fbo-texture-2d.glsl fbo-texture-2d.frag fbo-splash.vert fbo-splash.frag fbo-splash.glsl)
glCreateSampleGTC(fbo)
set(GL_SHADER_GTC draw-image-space-rendering.vert draw-image-space-rendering.glsl draw-image-space-rendering.frag)
glCreateSampleGTC(draw-image-space-rendering)
set(GL_SHADER_GTC interop.comp interop.vert interop.frag)
#glCreateSampleGTC(interop)
set(GL_SHADER_GTC interface-matching.vert interface-matching.cont interface-matching.eval interface-matching.geom interface-matching.frag)
glCreateSampleGTC(interface-matching)
set(GL_SHADER_GTC image-load.vert image-load.frag)
glCreateSampleGTC(image-load)
set(GL_SHADER_GTC image-store-write.vert image-store-write.frag image-store-read.vert image-store-read.frag)
glCreateSampleGTC(image-store)
set(GL_SHADER_GTC image-unpack.vert image-unpack.frag)
glCreateSampleGTC(image-unpack)
set(GL_SHADER_GTC memory-barrier-update.vert memory-barrier-update.frag memory-barrier-blit.vert memory-barrier-blit.frag)
glCreateSampleGTC(memory-barrier)
set(GL_SHADER_GTC picking.vert picking.frag picking.geom)
glCreateSampleGTC(picking)
set(GL_SHADER_GTC primitive-line-aa.vert primitive-line-aa.frag primitive-line-splash.vert primitive-line-splash.frag)
glCreateSampleGTC(primitive-line-aa)
set(GL_SHADER_GTC sampler-fetch.vert sampler-fetch.frag sampler-fetch-builtin.frag sampler-library.frag)
glCreateSampleGTC(sampler-fetch)
set(GL_SHADER_GTC gather.vert gather.frag)
glCreateSampleGTC(sampler-gather)
set(GL_SHADER_GTC test-depth-conservative.vert test-depth-conservative.frag)
glCreateSampleGTC(test-depth-conservative)
set(GL_SHADER_GTC texture-array.vert texture-array.frag)
glCreateSampleGTC(texture-array)
set(GL_SHADER_GTC texture-cube.vert texture-cube.frag)
glCreateSampleGTC(texture-cube)
set(GL_SHADER_GTC texture-2d.vert texture-2d.frag)
glCreateSampleGTC(texture-pixel-store)
set(GL_SHADER_GTC texture-shadow-color.vert texture-shadow-color.frag texture-shadow-depth.vert texture-shadow-depth.frag)
#glCreateSampleGTC(texture-shadow)
set(GL_SHADER_GTC texture-storage.vert texture-storage.frag)
glCreateSampleGTC(texture-storage)
set(GL_SHADER_GTC texture-conversion.vert texture-conversion-uint.frag texture-conversion-normalized.frag)
glCreateSampleGTC(texture-conversion)
set(GL_SHADER_GTC texture-2d.vert texture-2d.frag)
glCreateSampleGTC(texture-compressed)
set(GL_SHADER_GTC feedback-stream.vert feedback-stream.frag transform-stream.vert transform-stream.geom)
glCreateSampleGTC(transform-feedback-instanced)

# OpenGL 4.3 samples
set(GL_VERSION_GTC 430)

set(GL_SHADER_GTC atomic-counter.vert atomic-counter.frag)
glCreateSampleGTC(atomic-counter)
set(GL_SHADER_GTC )
glCreateSampleGTC(caps)
set(GL_SHADER_GTC buffer-uniform.vert buffer-uniform.frag)
glCreateSampleGTC(buffer-uniform)
set(GL_SHADER_GTC debug.vert debug.frag debug.glsl)
glCreateSampleGTC(debug)
set(GL_SHADER_GTC direct-state-access.frag direct-state-access.vert)
glCreateSampleGTC(direct-state-access-ext)
set(GL_SHADER_GTC draw-without-vertex-attrib.vert draw-without-vertex-attrib.frag)
glCreateSampleGTC(draw-without-vertex-attrib)
set(GL_SHADER_GTC draw-vertex-attrib-binding.vert draw-vertex-attrib-binding.frag draw-vertex-attrib-binding.glsl)
glCreateSampleGTC(draw-vertex-attrib-binding)
set(GL_SHADER_GTC fbo-invalidate-render.vert fbo-invalidate-render.frag fbo-invalidate-splash.vert fbo-invalidate-splash.frag)
glCreateSampleGTC(fbo-invalidate)
set(GL_SHADER_GTC fbo-srgb-decode.vert fbo-srgb-decode.frag fbo-srgb-decode-blit.vert fbo-srgb-decode-blit.frag)
glCreateSampleGTC(fbo-srgb-decode)
set(GL_SHADER_GTC fbo-render.vert fbo-render.frag fbo-splash.vert fbo-splash.frag)
glCreateSampleGTC(fbo-without-attachment)
set(GL_SHADER_GTC glsl-std140.comp)
glCreateSampleGTC(glsl-std140)
set(GL_SHADER_GTC glsl-std430.comp)
glCreateSampleGTC(glsl-std430)
set(GL_SHADER_GTC image-sampling.vert image-sampling.frag)
glCreateSampleGTC(image-sampling)
set(GL_SHADER_GTC image-store-write.vert image-store-write.frag image-store-read.vert image-store-read.frag)
glCreateSampleGTC(image-store)
set(GL_SHADER_GTC interface-matching.vert interface-matching.cont interface-matching.eval interface-matching.geom interface-matching.frag)
glCreateSampleGTC(interface-matching)
set(GL_SHADER_GTC )
glCreateSampleGTC(perf-monitor-amd)
set(GL_SHADER_GTC )
glCreateSampleGTC(performance-query-khr)
set(GL_SHADER_GTC multi-draw-indirect.vert multi-draw-indirect.frag)
glCreateSampleGTC(multi-draw-indirect)
set(GL_SHADER_GTC performance-query-intel.vert performance-query-intel.frag)
glCreateSampleGTC(performance-query-intel)
set(GL_SHADER_GTC program-subroutine.vert program-subroutine.geom program-subroutine.frag)
glCreateSampleGTC(program-subroutine)
set(GL_SHADER_GTC program-compute.vert program-compute.frag program-compute.comp)
glCreateSampleGTC(program-compute)
set(GL_SHADER_GTC program-compute-image.vert program-compute-image.frag program-compute-image.comp)
glCreateSampleGTC(program-compute-image)
set(GL_SHADER_GTC query-conditional.vert query-conditional.frag)
glCreateSampleGTC(query-conditional)
set(GL_SHADER_GTC query-occlusion.vert query-occlusion.frag)
glCreateSampleGTC(query-occlusion)
set(GL_SHADER_GTC texture-buffer.vert texture-buffer.frag)
glCreateSampleGTC(texture-buffer)
set(GL_SHADER_GTC texture-copy.vert texture-copy.frag)
glCreateSampleGTC(texture-copy)
set(GL_SHADER_GTC texture-storage.vert texture-storage.frag texture-storage.glsl)
glCreateSampleGTC(texture-storage)
set(GL_SHADER_GTC texture-fetch-dependent.vert texture-fetch-dependent.frag)
glCreateSampleGTC(texture-fetch-dependent)

set(GL_SHADER_GTC draw-without-vertex-attrib.vert draw-without-vertex-attrib.frag)
glCreateSampleGTC(texture-view)

# OpenGL 4.4 samples
set(GL_VERSION_GTC 440)

set(GL_SHADER_GTC atomic-counter.vert atomic-counter.frag)
glCreateSampleGTC(atomic-counter)
set(GL_SHADER_GTC buffer-storage.vert buffer-storage.frag)
glCreateSampleGTC(buffer-storage)
set(GL_SHADER_GTC buffer-type.vert buffer-type.frag)
glCreateSampleGTC(buffer-type)
set(GL_SHADER_GTC )
glCreateSampleGTC(caps)
set(GL_SHADER_GTC fbo-depth-stencil-render.vert fbo-depth-stencil-render.frag fbo-depth-stencil-blit.vert fbo-depth-stencil-blit.frag)
glCreateSampleGTC(fbo-depth-stencil)
set(GL_SHADER_GTC fbo-readpixels-blit.vert fbo-readpixels-blit.frag fbo-readpixels-sample.vert fbo-readpixels-sample.frag)
glCreateSampleGTC(fbo-readpixels-async)
set(GL_SHADER_GTC fbo-readpixels-blit.vert fbo-readpixels-blit.frag fbo-readpixels-sample.vert fbo-readpixels-sample.frag)
glCreateSampleGTC(fbo-readpixels-staging)
set(GL_SHADER_GTC fbo-render.vert fbo-render.frag fbo-splash.vert fbo-splash.frag)
glCreateSampleGTC(fbo-without-attachment)
set(GL_SHADER_GTC interface-matching.vert interface-matching.cont interface-matching.eval interface-matching.geom interface-matching.frag)
glCreateSampleGTC(interface-matching)
set(GL_SHADER_GTC query-occlusion.vert query-occlusion.frag)
glCreateSampleGTC(query-occlusion)
set(GL_SHADER_GTC sampler-wrap.vert sampler-wrap.frag)
glCreateSampleGTC(sampler-wrap)
set(GL_SHADER_GTC sampler-wrap.vert sampler-wrap.frag)
glCreateSampleGTC(sampler-wrap-ext)
set(GL_SHADER_GTC shader-storage-buffer.vert shader-storage-buffer.frag)
glCreateSampleGTC(shader-storage-buffer)
set(GL_SHADER_GTC texture-2d.vert texture-2d.frag)
glCreateSampleGTC(texture-compressed)
set(GL_SHADER_GTC transform-feedback-transform.vert transform-feedback-feedback.vert transform-feedback-feedback.frag)
glCreateSampleGTC(transform-feedback)

# OpenGL 4.5 samples
set(GL_VERSION_GTC 450)

set(GL_SHADER_GTC )
glCreateSampleGTC(caps)
set(GL_SHADER_GTC clip-control.frag clip-control.vert)
glCreateSampleGTC(clip-control)
set(GL_SHADER_GTC culling.vert culling.frag)
glCreateSampleGTC(culling)
set(GL_SHADER_GTC direct-state-access.frag direct-state-access.vert)
glCreateSampleGTC(direct-state-access)
set(GL_SHADER_GTC fbo-multisample-explicit.vert fbo-multisample-explicit-box.frag fbo-multisample-explicit-near.frag fbo-multisample-explicit-texture.frag)
glCreateSampleGTC(fbo-multisample-explicit)
set(GL_SHADER_GTC query-conditional.vert query-conditional.frag)
glCreateSampleGTC(query-conditional)
set(GL_SHADER_GTC query-statistics.vert query-statistics.frag)
glCreateSampleGTC(query-statistics-arb)
set(GL_SHADER_GTC texture-barrier-blend.vert texture-barrier-blend.frag texture-barrier-blend.glsl texture-barrier-splash.vert texture-barrier-splash.frag texture-barrier-splash.glsl)
glCreateSampleGTC(texture-barrier)
set(GL_SHADER_GTC texture-derivative-x.vert texture-derivative-x.frag texture-derivative-y.vert texture-derivative-y.frag)
glCreateSampleGTC(texture-derivative)
set(GL_SHADER_GTC texture-lod-query.vert texture-lod-query.frag texture-lod-query-builtin.frag sampler-library.frag)
glCreateSampleGTC(texture-lod-query)
set(GL_SHADER_GTC primitive-tessellation-point-draw.frag primitive-tessellation-point-draw.eval primitive-tessellation-point-draw.cont primitive-tessellation-point-draw.vert)
glCreateSampleGTC(primitive-tessellation-point-draw)
set(GL_SHADER_GTC primitive-tessellation-eval.frag primitive-tessellation-eval.eval primitive-tessellation-eval.vert)
glCreateSampleGTC(primitive-tessellation-eval)

# OpenGL 4.6 samples
set(GL_VERSION_GTC 460)

set(GL_SHADER_GTC atomic-counter.vert atomic-counter.frag)
glCreateSampleGTC(atomic-counter)
set(GL_SHADER_GTC fbo-shadow-depth.vert fbo-shadow-render.vert fbo-shadow-render.frag)
glCreateSampleGTC(fbo-shadow)
set(GL_SHADER_GTC glsl-vote.vert glsl-vote.frag)
glCreateSampleGTC(glsl-vote)
set(GL_SHADER_GTC multi-draw-indirect.vert multi-draw-indirect.frag)
glCreateSampleGTC(multi-draw-indirect)
set(GL_SHADER_GTC multi-draw-indirect-count.vert multi-draw-indirect-count.frag)
glCreateSampleGTC(multi-draw-indirect-count)
set(GL_SHADER_GTC program-compile-khr.vert program-compile-khr.frag)
glCreateSampleGTC(program-compile-khr)
set(GL_SHADER_GTC texture-2d.vert texture-2d.frag)
glCreateSampleGTC(texture-2d)
set(GL_SHADER_GTC transform-feedback-transform.vert transform-feedback-feedback.vert transform-feedback-feedback.frag)
glCreateSampleGTC(transform-feedback)

# OpenGL 5 hardware samples
set(GL_VERSION_GTC 500)

set(GL_SHADER_GTC blend-op-amd.vert blend-op-amd.frag blend-texture-2d-amd.vert blend-texture-2d-amd.frag)
glCreateSampleGTC(blend-op-amd)
set(GL_SHADER_GTC buffer-sparse.vert buffer-sparse.frag)
glCreateSampleGTC(buffer-sparse-arb)
set(GL_SHADER_GTC conservative-raster.vert conservative-raster.frag conservative-raster-blit.vert conservative-raster-blit.frag)
glCreateSampleGTC(conservative-raster-nv)

set(GL_SHADER_GTC draw-shader-nv.task draw-shader-nv.mesh draw-shader-nv.frag)
glCreateSampleGTC(draw-shader-nv)
set(GL_SHADER_GTC draw-shader-instancing-nv.task draw-shader-instancing-nv.mesh draw-shader-instancing-nv.frag)
glCreateSampleGTC(draw-shader-instancing-nv)

set(GL_SHADER_GTC fbo-layered-viewport-nv.vert fbo-layered-viewport-nv.frag fbo-layered-layer-nv.vert fbo-layered-layer-nv.frag)
glCreateSampleGTC(fbo-layered-nv)
set(GL_SHADER_GTC fbo-layered-viewport-amd.vert fbo-layered-viewport-amd.frag fbo-layered-layer-amd.vert fbo-layered-layer-amd.frag)
glCreateSampleGTC(fbo-layered-amd)
set(GL_SHADER_GTC fbo-multisample-position-amd.vert fbo-multisample-position-amd.frag)
glCreateSampleGTC(fbo-multisample-position-amd)
set(GL_SHADER_GTC fill-rectangle.frag fill-rectangle.vert)
glCreateSampleGTC(fill-rectangle-nv)
set(GL_SHADER_GTC primitive-bindless-nv.vert primitive-bindless-nv.frag)
glCreateSampleGTC(primitive-bindless-nv)
set(GL_SHADER_GTC primitive-shading-nv.vert primitive-shading-nv.geom primitive-shading-nv.frag)
glCreateSampleGTC(primitive-shading-nv)
set(GL_SHADER_GTC sample-location-splash.vert sample-location-splash.frag sample-location-render.vert sample-location-render.frag)
glCreateSampleGTC(sample-location-grid-nv)
set(GL_SHADER_GTC shader-blend-render-intel.vert shader-blend-render-intel.frag shader-blend-blit-intel.vert shader-blend-blit-intel.frag)
glCreateSampleGTC(shader-blend-intel)
set(GL_SHADER_GTC shader-blend-render-nv.vert shader-blend-render-nv.frag shader-blend-blit-nv.vert shader-blend-blit-nv.frag)
glCreateSampleGTC(shader-blend-nv)
set(GL_SHADER_GTC shader-invocation.vert shader-invocation.frag)
glCreateSampleGTC(shader-invocation-nv)
set(GL_SHADER_GTC shader-group-nv.vert shader-group-nv.frag shader-group-blit-nv.vert shader-group-blit-nv.frag)
glCreateSampleGTC(shader-group-nv)
set(GL_SHADER_GTC test-depth-clamp-separate.vert test-depth-clamp-separate.frag)
glCreateSampleGTC(test-depth-clamp-separate-amd)
set(GL_SHADER_GTC test-scissor-exclusive-nv.vert test-scissor-exclusive-nv.frag)
glCreateSampleGTC(test-scissor-exclusive-nv)
set(GL_SHADER_GTC texture-bindless.vert texture-bindless.frag)
glCreateSampleGTC(texture-bindless-arb)
set(GL_SHADER_GTC texture-bindless-nv.vert texture-bindless-nv.frag)
glCreateSampleGTC(texture-bindless-nv)
set(GL_SHADER_GTC texture-cube.vert texture-cube.frag)
glCreateSampleGTC(texture-cube-arb)
set(GL_SHADER_GTC texture-sparse.vert texture-sparse.frag texture-sparse.glsl)
glCreateSampleGTC(texture-sparse-arb)
set(GL_SHADER_GTC texture-sparse-amd.vert texture-sparse-amd.frag texture-sparse-amd.glsl)
glCreateSampleGTC(texture-sparse-amd)
set(GL_SHADER_GTC texture-sparse-ext.vert texture-sparse-ext.frag)
glCreateSampleGTC(texture-sparse-ext)

